package com.ship.dispatch.service.fob;
/**
 *@title SpFobTemplateService
 *@description
 *@author yl
 *@create 2023/12/16 0016
 */

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ship.common.core.web.domain.JsonResult;
import com.ship.common.business.service.BaseService;
import com.ship.dispatch.bean.fob.SpFobTemplate;
import com.ship.dispatch.bo.fileTemplate.SpFobTemplateBO;
import com.ship.dispatch.bpm.vo.dto.FieldOptions;
import com.ship.dispatch.bpm.vo.dto.FormTemplate;
import com.ship.dispatch.model.dto.fileTemplate.SpFobFileTemplateDto;
import com.ship.dispatch.model.dto.fileTemplate.SpFobTemplateDto;
import com.ship.dispatch.model.dto.fileTemplate.SpFobTemplateUpdateDto;
import com.ship.dispatch.vo.fileTemplate.NodeVO;
import com.ship.dispatch.vo.fileTemplate.SpFobTemplateListVO;
import liquibase.pro.packaged.S;
import org.springframework.http.codec.multipart.FilePart;

import java.io.IOException;
import java.util.List;
import java.util.concurrent.CompletableFuture;

public interface SpFobTemplateService extends BaseService<SpFobTemplate> {
    /**
     * 根据业务节点查询邮件模板信息
     * @param key
     * @return
     */
    List<FieldOptions> getTemplateInfoByServiceKey(String key,String type);

    /**
     * 根据业务类型获取 合同信息
     * @param dataKey
     * @param businessKey
     * @return
     */
    List<FieldOptions> getCronInfo(String dataKey, String businessKey);

    /**
     * 新增邮件模板
     * @param fobTemplateBO 邮件模板对象
     * @return
     */
    JsonResult  saveSpFobTemplate(SpFobTemplateBO fobTemplateBO, List<FormTemplate> formTemplates);

    /**
     * 邮件模板列表 分页
     * @param page
     * @param pageDto
     * @return
     */
    JsonResult<Page<SpFobTemplateListVO>> getPage(Page page, SpFobTemplateDto pageDto);

    JsonResult<Page<SpFobTemplateListVO>> getFilePage(Page page, SpFobFileTemplateDto pageDto);

    /**
     * 查询邮件模板详情
     * @param id
     * @return
     */
    SpFobTemplateListVO getFobTemplateInfo(Long id);

    /**
     * 删除邮件模板
     * @param id
     */
    void removeFobTemplateById(Long id);

    /**
     * 邮件模板状态变更
     * @param fobTemplateUpdateDto
     * @return
     */
    SpFobTemplate updateFobTemplateStatus(SpFobTemplateUpdateDto fobTemplateUpdateDto, List<FormTemplate> formTemplates);

    /**
     * 文件模板
     * @param file
     * @return
     */
    String processFile(FilePart file);

    CompletableFuture<String> processFileAsync(FilePart file);

    String getFileContent(String uri) throws IOException;

    String getExportInfo(SpFobFileTemplateDto pageDto) throws IOException;

    JsonResult updateFobFlieTemplateStatus(Long id);

    JsonResult getFobFlieTemplateInfo(Long id);

    SpFobTemplate updateFobTemplateStatus2(SpFobTemplateUpdateDto fobTemplateUpdateDto, List<NodeVO> formTemplates);

    JsonResult saveSpFobTemplate2(SpFobTemplateBO fobTemplateBO, List<NodeVO> formTemplates);
}
